package innova.controlador;

import innova.modelo.Idea;
import innova.modelo.Permitido;
import innova.modelo.Usuario;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class PermitidoController {

	private List<Permitido> permitidos;
	
	public PermitidoController() {
		this.permitidos = new ArrayList<>();
		
		//Creando algunos usuarios
		UsuarioController usuarioController = new UsuarioController();
		Usuario u1 = new Usuario();
		u1.setIdUsuario(usuarioController.getCodigoAutomatico());
		u1.setNombresUsuario("Joan");
		u1.setApellidoPaternoUsuario("Carbajal");
		u1.setApellidoMaternoUsuario("Guevara");
                usuarioController.registrar(u1);
		
		Usuario u2 = new Usuario();
		u2.setIdUsuario(usuarioController.getCodigoAutomatico());
		u2.setNombresUsuario("Lisbeth");
		u2.setApellidoPaternoUsuario("Osorio");
		u2.setApellidoMaternoUsuario("Guerra");
                usuarioController.registrar(u2);
		
		Usuario u3 = new Usuario();
		u3.setIdUsuario(usuarioController.getCodigoAutomatico());
		u3.setNombresUsuario("Olga");
		u3.setApellidoPaternoUsuario("Rojas");
		u3.setApellidoMaternoUsuario("Orbegoso");
                usuarioController.registrar(u3);
		
		Usuario u4 = new Usuario();
		u4.setIdUsuario(usuarioController.getCodigoAutomatico());
		u4.setNombresUsuario("Nelson");
		u4.setApellidoPaternoUsuario("Zanabria");
		u4.setApellidoMaternoUsuario("Tah");
		usuarioController.registrar(u4);
                
		Usuario u5 = new Usuario();
		u5.setIdUsuario(usuarioController.getCodigoAutomatico());
		u5.setNombresUsuario("Fernando");
		u5.setApellidoPaternoUsuario("Egusquiza");
		u5.setApellidoMaternoUsuario("Beltran");
                usuarioController.registrar(u5);
		
		Usuario u6 = new Usuario();
		u6.setIdUsuario(usuarioController.getCodigoAutomatico());
		u6.setNombresUsuario("Facundo");
		u6.setApellidoPaternoUsuario("Ortiz");
		u6.setApellidoMaternoUsuario("Moy");
                usuarioController.registrar(u6);
		
		//A�adiendo algunas ideas por defecto
		IdeaController ideaController = new IdeaController();
		Idea i1 = new Idea();
		i1.setIdIdea(ideaController.getCodigoAutomatico());
		i1.setTituloIdea("Idea 001");
		i1.setDescripcionIdea("Descripcion de la idea 001");
		i1.setPalabraClave01("primera");
		i1.setPalabraClave02("one");
		i1.setPalabraClave03("uno");
		i1.setPalabraClave04("1");
		i1.setEstadoIdea("C");
		i1.setFechaCreacionIdea(new Date());
		i1.setUsuario(u1);
                ideaController.registrar(i1);
		
		Idea i2 = new Idea();
		i2.setIdIdea(ideaController.getCodigoAutomatico());
		i2.setTituloIdea("Idea 002");
		i2.setDescripcionIdea("Descripcion de la idea 002");
		i2.setPalabraClave01("segunda");
		i2.setPalabraClave02("two");
		i2.setPalabraClave03("dos");
		i2.setPalabraClave04("2");
		i2.setEstadoIdea("A");
		i2.setFechaCreacionIdea(new Date());
		i2.setUsuario(u2);
                ideaController.registrar(i2);
		
		Idea i3 = new Idea();
		i3.setIdIdea(ideaController.getCodigoAutomatico());
		i3.setTituloIdea("Idea 003");
		i3.setDescripcionIdea("Descripcion de la idea 003");
		i3.setPalabraClave01("tercera");
		i3.setPalabraClave02("three");
		i3.setPalabraClave03("tres");
		i3.setPalabraClave04("3");
		i3.setEstadoIdea("C");
		i3.setFechaCreacionIdea(new Date());
		i3.setUsuario(u3);
                ideaController.registrar(i3);
		
		//Creando los permitidos
		Permitido p1 = new Permitido();
		p1.setIdPermitido(getCodigoAutomatico());
		p1.setIdea(i1);
		p1.setUsuario(u4);
                registrar(p1);
		
		Permitido p2 = new Permitido();
		p2.setIdPermitido(getCodigoAutomatico());
		p2.setIdea(i1);
		p2.setUsuario(u5);
                registrar(p2);
		
		Permitido p3 = new Permitido();
		p3.setIdPermitido(getCodigoAutomatico());
		p3.setIdea(i1);
		p3.setUsuario(u6);
                registrar(p3);
	}
	
	public List<Permitido> buscar() {
		//Listando todos los permitidos
		return permitidos;
	}
	
	public List<Permitido> buscar(Permitido permitido) {
		//Creando un listado de resultado
		List<Permitido> resultado = new ArrayList<>();
		
		//Recorriendo los permitidos
		for(Permitido item : permitidos) {
			//Verificando si es igual por el codigo
			if(item.getIdPermitido() == permitido.getIdPermitido()) {
				//Asignando el item al resultado
				resultado.add(item);
			}
		}
		
		//Devolviendo el resultado
		return resultado;
	}
	
	public void eliminar(Permitido permitido) {
		//Eliminando el permitido
		permitidos.remove(permitido);
	}
	
	public void registrar(Permitido permitido) {
		//Guardando en el listado
		permitidos.add(permitido);
	}
	
	public int getCodigoAutomatico() {
		//Contando la cantidad de permitidos
		int codigoAutomatico = 0;
		
		if(permitidos == null) {
			//Asignando el valor
			codigoAutomatico = 1;
		} else {
			//Obteniendo la cantidad
			int cantidad = permitidos.size();
			codigoAutomatico = cantidad + 1;
		}
		
		return codigoAutomatico;
	}
	
}
